#include<iostream>
#include <signal.h>
#include <unistd.h>
using namespace std;

#define BLOCK_SIGNAL 2
#define MAX_SIGNAL_NUM 32

static void showPending(const sigset_t& pending)
{
    for (int signo = MAX_SIGNAL_NUM; signo >= 1; signo--)
    {
        /* code */
        if(sigismember(&pending,signo))
        {
            cout<<"1";
        }else{
            cout<<"0";
        }
    }
    cout<<endl;
    
}
int main()
{
    // 生成三个sigset_t（这个就是位图）
    sigset_t block,oblock,pending;
    // 对生成的位图置0
    sigemptyset(&block);
    sigemptyset(&oblock);
    

    //生成一个位图 ，其中二号位置为0的。相当于屏蔽2号信号
    sigaddset(&block,BLOCK_SIGNAL);

    // 设置阻塞队列
    sigprocmask(SIG_SETMASK,&block,&oblock);

    while (true)
    {
        sleep(1);
        /* code */
        sigemptyset(&pending);

        sigpending(&pending);
        showPending(pending);

    }
    
    return 0;
}